The present invention relates generally to the field of software quality and more particularly to predicting the quality of a software product under development.
A part of the software product development process may be to improve current product functionality and to introduce new product functionality through the release of new versions of the software. When introducing new releases of the product, an important development goal may be to ensure that quality is not compromised. Quantifying product quality is often challenging.
Product quality assessment of a new product release is often based on a comparison and analysis of customer reported code errors and problems in the new release to error data from previous versions. This post-mortem analysis is often performed manually by reviewing the historical data of code errors, which product features are affected, and in which product release. When this manual analysis reveals a pattern of product failures, the development organization may identify actions to be taken. Such actions may include, for example, software product development process improvements, such as more code reviews, more automation, improved test coverage, and a realignment of personnel allocation, such as assigning additional resources to focus on the new product functionality under development, error prone sections of the software code, and sections of the software code that have the most additional lines of code.
This reactive approach has disadvantages. Typically, a large amount of manual effort is required to review and analyze the customer-provided information. In addition, this analysis may require analyzing large amounts of historic code defect records. As well, code defects detected and reported by customers may result in corrective actions scheduled for future product versions rather than the current version under development. It would be advantageous to predict software quality for a product under development so as to be able to address potential problems in real time.